package com.cy.pj.sys.service.impl;

import com.cy.pj.common.pojo.PageObject;
import com.cy.pj.sys.dao.SysLogDao;
import com.cy.pj.sys.pojo.SysLog;
import com.cy.pj.sys.service.SysLogService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class SysLogServiceImpl implements SysLogService {
    @Autowired
    private SysLogDao sysLogDao;

    /**
     * @Async 此注解描述的方法为一个异步切入点方法
     *        此方法会运行在一个新的线程上
     *        这个线程来自于springboot提供的线程池(启动类上加@EnableAsync)
     * @param log
     */
    @Async
    @Override
    public void saveUserLog(SysLog log) {
        //获取当前线程的名字
        String tname=Thread.currentThread().getName();
        System.out.println(tname);
        sysLogDao.insert(log);
    }

    @Override
    public PageObject<SysLog> findPageObjects(String username, Integer pageCurrent) {
        //1.参数校验
        //2.启动分页配置(底层会启动一个mybatis拦截器，拦截sql会话)
        int pageSize=3;
        Page<SysLog> page= PageHelper.startPage(pageCurrent, pageSize);//底层会计算起始位置
        //3.执行分页查询(底层会在查询时为sql语句添加limit 语句)
        List<SysLog> records=sysLogDao.findPageObjects(username);
        return new PageObject<>( pageCurrent,pageSize,(int)page.getTotal(), records);
    }
}
